#include "TcpServer.hpp" //会话层
#include "Service.hpp" //表示层
#include "NetCal.hpp" //应用层



// ./tcpserver 8888
int main(int argc, char *argv[])
{
  if (argc != 2)
  {
    std::cerr << "Usage: " << argv[0] << " local-port" << std::endl;
    exit(0);
  }
  uint16_t port = std::stoi(argv[1]);

  // 我们的软件代码，我们手动划分成了三层
  NetCal cal;


  IOService service(std::bind(&NetCal::Calculator, &cal, std::placeholders::_1));
  //构建TCP服务器
  std::unique_ptr<TcpServer> tsvr = std::make_unique<TcpServer>(
    std::bind(&IOService::IOExecute, 
      &service, std::placeholders::_1, std::placeholders::_2), 
      port);
  tsvr->Loop();

  return 0;
}

